package com.algorithm;

/**
 * 返回一个数字转化为2进制后,里面1的个数
 * Created by houjinxin on 16/5/5.
 */
public class ReturnOnesNum {

    public static void main(String[] args) {
        int i = 1000000;
        System.out.println(Integer.toBinaryString(i));
        System.out.println(returnOnesNum(i));
    }

    public static int returnOnesNum(int n) {
        if (n < 2) { // 基准情形,要么返回是0 要么返回时1 若当n=2时, 不能用2来表示1的个数
            return n;
        } else { //n是奇数时,n%2=1,否则为0 1的个数为 n/2取整中1的个数加以一
            return n % 2 + returnOnesNum(n / 2);
        }
    }
}
